home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / AmigaTalk / user / Vector2D.st < prev    next >
Text File  |  2004-01-31  |  3KB  |  125 lines

  1. " -------------------------------------------------------------- "
  2. " Vector2D.st - Implementation of Vectors of 2-dimensions.       "
  3. " -------------------------------------------------------------- "
  4.  
  5. Class Vector2D :VectorN ! v1 v2 !
  6. [
  7.   new
  8.     v1 <- Float new: 0.0. 
  9.     v2 <- Float new: 0.0.
  10.  
  11.     ^ self 
  12. |
  13.   norm
  14.     ^ (((v1 * v1) + (v2 * v2)) sqrt).
  15. |
  16.   scale: aNumber
  17.     v1 <- v1 * aNumber.
  18.     v2 <- v2 * aNumber.
  19.  
  20.     ^ self
  21. |
  22.   printString
  23.     ('<', v1 asString, ', ', v2 asString, '>') print
  24. |
  25.   dot: b
  26.     ^ (((self v1) * (b v1)) + ((self v2) * (b v2))))
  27. |
  28.   v1
  29.    ^ v1 
  30. |
  31.   v2
  32.    ^ v2 
  33. |
  34.   v1: newV1
  35.    ^ v1 <- newV1
  36. |
  37.   v2: newV2
  38.    ^ v2 <- newV2
  39. |
  40.   cross: b
  41.    ^ (((self v1) * (b v2)) - ((self v2) * (b v1)))
  42. |
  43.   - b
  44.     (b isKindOf: Vector2D)
  45.       if False: [ ('Argument wrong class for - Vector2D') print.
  46.                   ^ nil
  47.                 ].
  48.                 
  49.     v1 <- ((self v1) - (b v1)).
  50.     v2 <- ((self v2) - (b v2)).
  51.  
  52.     ^ self
  53. |
  54.   + b
  55.     (b isKindOf: Vector2D)
  56.       if False: [ ('Argument wrong class for + Vector2D') print.
  57.                   ^ nil
  58.                 ].
  59.                 
  60.     v1 <- ((self v1) + (b v1)).
  61.     v2 <- ((self v2) + (b v2)).
  62.  
  63.     ^ self
  64. |
  65.   < b
  66.     (b isKindOf: Vector2D)
  67.       if False: [ ('Argument wrong class for < Vector2D') print.
  68.                   ^ nil
  69.                 ].
  70.                 
  71.     ((self norm) < (b norm))
  72.       ifTrue:  [^ true ]
  73.       ifFalse: [^ false]
  74. |
  75.   > b
  76.     (b isKindOf: Vector2D)
  77.       if False: [ ('Argument wrong class for > Vector2D') print.
  78.                   ^ nil
  79.                 ].
  80.                 
  81.     ((self norm) > (b norm))
  82.       ifTrue:  [^ true ]
  83.       ifFalse: [^ false]
  84. |
  85.   <= b
  86.     (b isKindOf: Vector2D)
  87.       if False: [ ('Argument wrong class for <= Vector2D') print.
  88.                   ^ nil
  89.                 ].
  90.                 
  91.     ((self norm) <= (b norm))
  92.       ifTrue:  [^ true ]
  93.       ifFalse: [^ false]
  94. |
  95.   >= b
  96.     (b isKindOf: Vector2D)
  97.       if False: [ ('Argument wrong class for >= Vector2D') print.
  98.                   ^ nil
  99.                 ].
  100.                 
  101.     ((self norm) >= (b norm))
  102.       ifTrue:  [^ true ]
  103.       ifFalse: [^ false]
  104. |
  105.   = b
  106.     (b isKindOf: Vector2D)
  107.       if False: [ ('Argument wrong class for = Vector2D') print.
  108.                   ^ nil
  109.                 ].
  110.                 
  111.     ((self norm) = (b norm))
  112.       ifTrue:  [^ true ]
  113.       ifFalse: [^ false]
  114. |
  115.   ~= b
  116.     (b isKindOf: Vector2D)
  117.       if False: [ ('Argument wrong class for ~= Vector2D') print.
  118.                   ^ nil
  119.                 ].
  120.                 
  121.     ((self norm) ~= (b norm))
  122.       ifTrue:  [^ true ]
  123.       ifFalse: [^ false]
  124. ]
  125.